package pfc.mensaje;


import easypastry.cast.CastContent;
import java.util.Calendar;

import pfc.Conversacion;
import pfc.Usuario;
import pfc.Constantes;


/**
 * Implementa la clase padre de la que heredarán los diferentes tipos de mensajes.
 * @author Gabriel Reus Rodríguez
 * @version 1.0, 06/11/2010
 */

public class Mensaje extends CastContent
{

	/**
	*Marca el tipo de mensaje enviado.
	*/
	protected int tipo;
	/**
	*Marca la fecha y hora del mensaje enviado.
	*/
	protected Calendar timeStamp;
	protected int idConversacion;
	/**
	*Usuario emisor del mensaje
	*/
	protected Usuario emisor= null;

	/**
	 * Variable necesaria para evitar el warning al compilar ya que debido a la herencia es una clase Serializable.
	 */
	protected static final long serialVersionUID = 1L;

	/**
	 * Constructor.
	 */
	public Mensaje()
	{
		super("");
		timeStamp=initCalendar();
	}

	/**
	 * Constructor.
	 */
	public Mensaje(String grupo)
	{
		super(grupo);
		timeStamp=initCalendar();
	}

	/**
	 * Constructor.
	 */

	public Mensaje(String grupo, int tipo)
	{
		super(grupo);
		this.tipo=tipo;
		timeStamp=initCalendar();
	}

	public Mensaje(String grupo, int tipo,Conversacion conv,Usuario emisor)
	{
		super(grupo);
		this.tipo=tipo;
		timeStamp=initCalendar();
//		conversacion = conv;
		if(conv == null)
		{
			idConversacion=Constantes.NO_CONVERSACION;
		}
		else
		{
			idConversacion=conv.getId();
		}
		this.emisor=emisor;
	}

	/**
	 * Obtiene una instancia de la clase Calendar con la fecha y hora actuales.
	 */

	private static Calendar initCalendar()
	{
		return Calendar.getInstance();
	}

	public int getTipo()
	{
		return this.tipo;
	}

	public Calendar getTimeStamp()
	{
		return this.timeStamp;
	}

	public String getTimeStamptoString()
	{
		return this.timeStamp.toString();
	}

	/**
	*Obtiene la fecha en una cadena de texto con el formato adecuado 
	*/
	public String getTimeStamp_Hora()
	{
		String fecha=""; //HH:MM:SS -
		Calendar t= this.getTimeStamp();
		fecha+=t.get(Calendar.HOUR)+":"+t.get(Calendar.MINUTE)+":"+t.get(Calendar.SECOND);
		return fecha;
	}

	public int getIdConversacion()
	{
		return this.idConversacion;
	}	
	
	public Usuario getEmisor()
	{
		return this.emisor;
	}
}
